1. Field of the Invention
This invention relates to a computer system and, more particularly, to a device and method for granting accesses to a peripheral bus according to a multi-level prioritization scheme which can elevate or promote a lower level bus master to an upper level prioritization ring if the target of the lower level bus master becomes unavailable or is data transfer from the lower level bus master is interrupted.
2. Description of the Related Art
It is well known that computer systems in general employ a mechanism for allocating a shared resource. That shared resource may involve a bus on which multiple bus agents are connected. The allocation mechanism and its supporting hardware define arbitration protocols by which only one agent at a time can achieve mastership of the common bus.
If an agent wishes to communicate with another agent, the first agent typically sends a signal requesting mastership across the common bus connecting the two agents. The first agent soliciting mastership is often called the bus master, and the agent that responds to that master is called the slave. Some agents can act only as masters, some only as slaves, and others as either masters or slaves.
If many agents attempt to gain access to a common bus at the same time, the arbitration protocol must decide which agent should be given priority. There are many types of arbitration protocols currently used to formulate that decision. For example, arbitration can be performed either in a round-robin fashion or by a fixed priority scheme. Round-robin arbitration involves assigning priority in a cyclical sequence or loop. If two or more agents wish to use the common bus resource, access is granted to the first agent within the loop closest to the last agent which used the common bus resource. Accordingly, a pointer is directed to a port upon the round-robin arbitration ring and thereby points to the last agent to use the bus. The pointer is rotated about the ring of ports each time access is granted. A fixed priority arbitration scheme involves assigning a unique priority to each agent. If two or more agents wish to use the bus resource, access is always granted to the device with the highest priority value. Examples of various round-robin and fixed priority schemes are set forth in U.S. Pat. No. 5,088,024 (herein incorporated by reference).
The fixed priority arbitration principle can advantageously assign a higher priority to agents which must gain access to the bus quickly in order to avoid malfunction or loss of information. Such agents are often referred to as low latency agents. High latency agents, however, can wait for a longer period of time without suffering ill effects. An unfortunate aspect of a fixed priority scheme is that the priority value of each agent is fixed and cannot be readily changed. Conversely, a round-robin arbitration scheme gives equal opportunities to all agents, such that each agent is given a turn at having the highest priority. However, once an agent has terminated its access, it must wait its turn until all the other agents within the ring have culminated their accesses. Agents with low latency may therefore be unfortunately starved of access to the bus.
It would be desirable to introduce a multi-level arbitration mechanism which can assign higher priorities to low latency agents and lower priority to high latency agents. As defined henceforth, the shared resource is a peripheral bus, and the agents are peripheral devices which are operably connected to that bus. The peripheral bus includes a peripheral component interface ("PCI") bus and peripheral devices include all devices either directly or indirectly coupled to, e.g., the PCI bus. The peripheral devices may therefore entail devices such as the microprocessor which is connected to the peripheral bus through a bus interface unit.
The advantage of introducing a multi-level arbitration system within the confines of a round-robin arbitration scheme would be particularly beneficial if the high and low priority peripheral devices can be dynamically switched between the high and low level priority rings. Accordingly, it would be desirable to introduce a mechanism and method for altering the assignment of peripheral devices from a port upon the low priority ring to a port on the high priority ring during run time. This benefit would more adequately service low priority peripheral devices whose data transfer is somehow interrupted and must thereafter be retried.